package com.doitedu.day05.high_leve

/**
 * @Date 22.6.25
 * @Created by HANGGE
 * @Description
 * 1  参数是函数     灵活  传入的函数不同  数据处理逻辑不同
 * 2  返回值是函数    减少参数的传递次数
 */
object Demo01_Test {

  def  makeUrl(ssl:Boolean, host:String): String ={
    if (ssl){
     s"https://$host"
    }else {
      s"http://$host"
    }
  }

  def  makeUrl2(ssl:Boolean, host:String ,key:String , value:String): String ={
    if (ssl){
      s"https://$host?$key=$value"
    }else {
      s"http://$host?$key=$value"
    }
  }

  def  makeUrlPlus(ssl:Boolean, host:String) ={
    (key:String , value:String) =>{
      if (ssl){
        s"https://$host?$key=$value"
      }else {
        s"http://$host?$key=$value"
      }
    }
  }

  def main(args: Array[String]): Unit = {
    //http://www.doitedu.com?wd=java
    //http://www.doitedu.com?wd=大数据
    //http://www.doitedu.com?wd=雨哥
    val str1 = makeUrl2(false, "www.doitedu.com", "wd", "java")
    val str2 = makeUrl2(false, "www.doitedu.com", "subject", "大数据")
    val str3 = makeUrl2(false, "www.doitedu.com", "name", "雨哥")
    println(str1)
    println(str2)
    println(str3)
  /*  val url = makeUrl(false, "www.doitedu.com")
    println(url)*/

    makeUrlPlus(true,"www.doitedu.com")("name","yuge")
    // 柯里化的方法调用分两步
    //   第一步
    val function = makeUrlPlus(false, "www.doitedu.com")
    //  第二步
    println(function("wd", "java"))
    //  第二步
    println(function("subject", "大数据"))
    //  第二步
    println(function("name", "雨哥"))
  }
}
